﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfApplication2.ViewModels;
using WpfApplication2.Views.Afiliado;
using WpfApplication2.SindicatoWebService;
using WpfApplication2.ViewModels.Afiliado;
using WpfApplication2.Helpers;
using WpfApplication2.ViewModels.Usuario;
using WpfApplication2.Views.Usuario;
using WpfApplication2.Views;
using WpfApplication2.Views.TipoOrden;
using WpfApplication2.ViewModels.TipoOrden;
using WpfApplication2.Views.Informes;
using WpfApplication2.ViewModels.TipoPlan;
using WpfApplication2.Views.TipoPlan;
using WpfApplication2.Views.Nomenclador;


namespace WpfApplication2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Page
    {
        public Instancias Instancias { get; set; }

        public ERoles Rol { get; set; }
        public UsuarioDTO Usuario
        {
            get;
            set;
        }
        public TipoPlanDTO Plan
        {
            get;
            set;
        }

        public MainWindow(UsuarioDTO usuario)
        {
            Usuario = usuario;
            Rol = SecurityHelper.GetRol(Usuario.Rol);
            InitializeComponent();
            frmContent.NavigationUIVisibility = NavigationUIVisibility.Hidden;
            this.WindowTitle = String.Format("Bienvenido {0}!", Usuario.UserName);
            ModalDialog.SetParent(ParentContainer);
            BajaAfiliadoDialog.SetParent(ParentContainer);
            Confirmacion.SetParent(ParentContainer);
            NuevaEvolucionDialog.SetParent(ParentContainer);
            Plan = new TipoPlanDTO { Descripcion = "-", Nombre = "-", PrecioTPlan = null, Id = 0 };
            Instancias = new Instancias 
                            { 
                                ModalDialog = ModalDialog, 
                                BajaDialog = BajaAfiliadoDialog,
                                FrameContent = frmContent,
                                Confirmacion = Confirmacion,
                                NuevaEvolucionDialog = NuevaEvolucionDialog
                            };
            DataContext = new MainWindowViewModel(Rol);
            frmContent.Content = new Home();
        }
        
        private void btnNuevoAfiliado_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new NuevoAfiliado(Instancias);
        }

        private void btnConsultarAfiliado_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarAfiliado(Instancias, OperacionBusquedaAfiliado.Consultar);
        }

        private void btnEditarAfiliado_Click(object sender, RoutedEventArgs e)
        {
            NuevoAfiliadoViewModel afiliadoViewModel = new NuevoAfiliadoViewModel(Instancias);
            frmContent.Content = new BuscarAfiliado(Instancias, OperacionBusquedaAfiliado.Editar);
        }

        private void btnNuevoUsuario_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new NuevoUsuario(Instancias);
        }

        private void btnNuevoTipoOrden_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new NuevoTipoOrden(Instancias);
        }

        private void btnVenderOrdenes_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarAfiliado(Instancias, OperacionBusquedaAfiliado.VenderOrdenes);
        }

        private void btnEditarTipoOrden_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarTipoOrden(Instancias);
        }
       
        private void btnOrdenesVendidas_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new PeriodoInforme(this, Instancias, Informe.OrdenesVendidas);
        }

        private void btnConsultarPlan_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new ConsultaPlan(Instancias);
        }

        private void btnInsertarPlan_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new IngresarTPlan(Instancias);
        }

        private void btnEditarPlan_Click(object sender, RoutedEventArgs e)
        {
            
            frmContent.Content = new EditarPlan(Instancias, Plan);
        }

        private void btnConsultarNomenclador_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new ConsultarNomenclador(Instancias);
        }

        private void btnNuevoNomenclador_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new NuevoNomenclador(Instancias);

        }

        private void btnConsultarUsuario_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarUsuario(Instancias, OperacionBusquedaUsuario.Consultar);
        }

        private void btnEditarUsuario_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarUsuario(Instancias, OperacionBusquedaUsuario.Editar);
        }

        private void btnEliminarUsuario_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarUsuario(Instancias, OperacionBusquedaUsuario.Eliminar);
        }

        private void btnEditarHistoria_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarAfiliado(Instancias, OperacionBusquedaAfiliado.NuevaHistoria);
        }

        private void btnConsultarHistoria_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new BuscarAfiliado(Instancias, OperacionBusquedaAfiliado.ConsultarHistoria);
        }

        private void btnInformePatologias_Click(object sender, RoutedEventArgs e)
        {
            frmContent.Content = new PeriodoInforme(this, Instancias, Informe.Patologias);
        }
    }

}
